﻿// libeventtest.cpp : Defines the entry point for the console application.
//

// LibeventTest.cpp : 定义控制台应用程序的入口点。
//

#ifdef _WIN32
#include "stdafx.h"
#endif

#include "networksystem.h"
#include <fstream>
#include "smart.msg.pb.h"
#include "basethread.h"
#include "networker.h"
#include "log4z.h"  

//#include "http_server.h"

using namespace zsummer::log4z;
using namespace std;

int main(int argc, char **argv)
{
	//start log4z  
	ILog4zManager::getRef().start();

	bool initialRes = NetWorkSystem::getSingleton().initial();

	if (!initialRes)
	{
		return 0;
	}

	NetWorkSystem::getSingleton().run();
	NetWorkSystem::getSingleton().release();
	getchar();

	//StartHttpServer("0.0.0.0",9001,true);

	//start_client();

	return 0;
}

//#include "mysql/mysql.h" 
//
//void sqlselect(MYSQL *, char *);     //测试查询数据 
//
//int main()
//{
//	//初始化MySQL连接句柄
//	MYSQL *mysql = NULL;
//	mysql = mysql_init((MYSQL *)0);
//
//	mysql_real_connect
//		(
//		mysql,
//		"127.0.0.1", //数据库地址
//		"root", //数据库用户名
//		"root", //数据库密码
//		"yanzefeng", //数据库名称
//		0, //数据库端口，0表示默认端口（即3306）
//		NULL, //如果unix_socket不是NULL，字符串指定套接字或应该被使用的命名管道。注意host参数决定连接的类型
//		0 //通常是0
//		);
//
//	if (!mysql) //连接失败
//	{
//		printf("Connection error:%d, %s\n", mysql_errno(mysql), mysql_error(mysql));
//	}
//
//	char *command = "select * from test1"; //查询指令
//
//	sqlselect(mysql, command); //查询数据   
//	mysql_close(mysql); //关闭连接  
//
//	system("pause");
//	return 0;
//}
//
//void sqlselect(MYSQL *mysql, char *command)
//{
//
//	int flag = mysql_real_query(mysql, command, strlen(command));
//
//	if (flag)
//	{
//		printf("Select error:%d, %s\n", mysql_errno(mysql), mysql_error(mysql));
//		return;
//	}
//
//	MYSQL_RES *res = mysql_store_result(mysql); //读取将查询结果   
//	MYSQL_FIELD *field = mysql_fetch_fields(res); //获取所有列名
//	int field_count = mysql_field_count(mysql); //获取列数
//
//	//输出所有列名
//	for (int i = 0; i < field_count; i++)
//	{
//		printf("%s\t", field[i].name);
//	}
//
//	printf("\n");
//
//	//遍历输出每一行数据  
//	MYSQL_ROW row;
//	while (row = mysql_fetch_row(res))
//	{
//		for (int i = 0; i < field_count; i++)
//		{
//			printf("%s\t", row[i]);
//		}
//		printf("\n");
//	}
//}


//#include <hiredis-master/hiredis.h>
//#include <windows.h>
//#include <iostream>
//
//using namespace std;
//
//#pragma comment(lib, "ws2_32.lib")
//
//void doTest()
//{
//	redisContext* c = redisConnect("127.0.0.1", 6379);
//	if (c->err)
//	{
//		cout << "Connect to redisServer failed: " << c->errstr << endl;
//		redisFree(c);
//		return;
//	}
//
//	cout << "Connect to redisServer Success" << endl;
//
//	const char* command1 = "set test1 value1";
//	redisReply* r = (redisReply*)redisCommand(c, command1);
//
//	if (NULL == r)
//	{
//		cout << "Execut command1 failed" << endl;
//		redisFree(c);
//		return;
//	}
//
//	if (!(r->type == REDIS_REPLY_STATUS && (strcmp(r->str, "OK") == 0 || strcmp(r->str, "ok") == 0)))
//	{
//		cout << "Failed to execute command: " << command1 << endl;
//		freeReplyObject(r);
//		redisFree(c);
//		return;
//	}
//
//	freeReplyObject(r);
//	cout << "Succeed to execute command" << command1 << endl;
//
//	const char* command2 = "strlen test1";
//	r = (redisReply*)redisCommand(c, command2);
//	if (r->type != REDIS_REPLY_INTEGER)
//	{
//		cout << "Failed to execute command" << command2 << endl;
//		freeReplyObject(r);
//		redisFree(c);
//		return;
//	}
//
//	int length = r->integer;
//	freeReplyObject(r);
//	cout << "The length of 'test1' is : " << length << endl;
//	cout << "Succeed to execute command :" << command2 << endl;
//
//	const char* command3 = "get test1";
//	r = (redisReply*)redisCommand(c, command3);
//	if (r->type != REDIS_REPLY_STRING)
//	{
//		cout << "Failed to execute command : " << command3 << endl;
//		freeReplyObject(r);
//		redisFree(c);
//		return;
//	}
//	cout << "The value of 'test1' is : " << r->str << endl;
//	freeReplyObject(r);
//	cout << "Succeed to execute command : " << command3 << endl;
//
//	const char* command4 = "get test2";
//	r = (redisReply*)redisCommand(c, command4);
//	if (r->type != REDIS_REPLY_NIL)
//	{
//		cout << "Failed to execute command : " << command4 << endl;
//		freeReplyObject(r);
//		redisFree(c);
//		return;
//	}
//	freeReplyObject(r);
//	cout << "Succeed to execute command : " << command4 << endl;
//
//	redisFree(c);
//}
//
//int main()
//{
//	WSADATA wsaData;
//	int nRet;
//	if ((nRet = WSAStartup(MAKEWORD(2, 2), &wsaData)) != 0)
//	{
//		cout << "WSAStartup failed" << endl;
//		exit(0);
//	}
//
//	doTest();
//
//	system("pause");
//	return 0;
//}